草庐IT

c++ - C 明显比 C++ 快吗

全部标签

php - 在 PHP 中测试变量是否存在的最佳方法; isset() 明显坏了

来自isset()docs:isset()willreturnFALSEiftestingavariablethathasbeensettoNULL.基本上,isset()根本不检查变量是否已设置,而是检查它是否设置为NULL以外的任何值。鉴于此,实际检查变量是否存在的最佳方法是什么?我试过类似的东西:if(isset($v)||@is_null($v))(@是必要的,以避免在$v未设置时出现警告)但is_null()与isset():它在未设置的变量上返回TRUE!看来:@($v===NULL)工作原理与@is_null($v)完全一样,所以也没有了。我们应该如何可靠地检查PHP中的

c++ - "for(;;)"比 "while (true)"快吗?如果不是,人们为什么要使用它?

for(;;){//Somethingtobedonerepeatedly}我见过这种东西用的很多,但我觉得它很奇怪......说while(true)或类似的东西不是更清楚吗?我猜(这也是许多程序员求助于神秘代码的原因)这是一个很小的差距?为什么,它真的值得吗?如果是这样,为什么不这样定义:#definewhile(true)for(;;)另见:Whichisfaster:while(1)orwhile(2)? 最佳答案 速度并不快。如果您真的很在意,请使用适合您平台的汇编器输出进行编译,然后看看。没关系。这一点都不重要。随心所欲

c++ - < 比 <= 快吗?

是if(a快于if(a?与这个简单的示例不完全一样,但循环复杂代码的性能略有变化。我想这与生成的机器代码有关,以防万一。 最佳答案 不,在大多数架构上它不会更快。您没有指定,但在x86上,所有积分比较通常都将在两条机器指令中实现:test或cmp指令,用于设置EFLAGS还有一个Jcc(jump)instruction,取决于比较类型(和代码布局):jne-如果不相等则跳转-->ZF=0jz-如果为零(等于)则跳转-->ZF=1jg-如果大于则跳转-->ZF=0andSF=OF(等等...)示例(为简洁而编辑)使用$gcc-m32-

ruby-on-rails - 为什么 'haml --check' 找不到这个明显的语法错误

我正在寻找可以帮助我追踪语法错误的rake任务,我遇到了haml--check作为双重检查haml文件的可能解决方案。不幸的是,当我将这个损坏的示例传递给它时,haml说语法没问题。我是不是误解了haml--check的目的?还是此功能未完全实现?我想我应该提到我正在使用Haml/Sass3.0.25(ClassyCassidy)、rails3.0.3、ruby1.9.2p0和Mac10.6.6。$haml--check/tmp/edit.html.hamlSyntaxOK#/tmp/edit.html.haml-content_for:headdo=include_javascrip

ruby-on-rails - Rails 测试在明显存在的情况下无法找到路线?

好吧,我累了,而且是Rails的新手,所以可能缺少一些非常基本的东西。无论如何,我刚刚开始一个新项目,正在为静态页面实现一个简单的Controller。写了一些单元测试只是为了确保我所有的路线都是正确的(目前只有4个)。其中三个通过了,但第四个给了我这个错误信息:1)Error:StaticPagesControllerTest#test_terms_of_service_should_return_success:ActionController::UrlGenerationError:Noroutematches{:action=>"terms",:controller=>"sta

c++ - vector::size() 的性能:它和读取变量一样快吗?

我对一个大的整数vector进行了广泛的计算。在计算过程中vector大小不会改变。vector的大小经常被代码访问。通常更快的是:使用vector::size()函数还是使用辅助常量vectorSize存储vector的大小?我知道编译器通常能够在设置正确的编译器标志时内联size()函数,但是,使函数内联是编译器可以做但不能强制的事情。 最佳答案 有趣的问题。那么,会发生什么?好吧,如果您使用gdb进行调试,您会看到类似3个成员变量(名称不准确):_M_begin:指向动态数组第一个元素的指针_M_end:指针越过动态数组的最后

c++ - vector::size() 的性能:它和读取变量一样快吗?

我对一个大的整数vector进行了广泛的计算。在计算过程中vector大小不会改变。vector的大小经常被代码访问。通常更快的是:使用vector::size()函数还是使用辅助常量vectorSize存储vector的大小?我知道编译器通常能够在设置正确的编译器标志时内联size()函数,但是,使函数内联是编译器可以做但不能强制的事情。 最佳答案 有趣的问题。那么,会发生什么?好吧,如果您使用gdb进行调试,您会看到类似3个成员变量(名称不准确):_M_begin:指向动态数组第一个元素的指针_M_end:指针越过动态数组的最后

go - 对于实现函数式语言的虚拟机,有哪些明显的优化?

我正在研究一种中间语言和一个虚拟机来运行具有几个“有问题”属性的函数式语言:词法命名空间(闭包)动态增长的调用堆栈慢整数类型(bignums)中间语言是基于堆栈的,具有当前命名空间的简单哈希表。为了让您了解它的外观,这里是McCarthy91功能:#McCarthy91:M(n)=n-10ifn>100elseM(M(n+11)).subMargsstonrclnfloat100gt.if.subrclnfloat10sub.end.subrclnfloat11addlist1rclMcall-fastlist1rclMtail.endcall-fast.end“大循环”很简单:取指令

go - 对于实现函数式语言的虚拟机,有哪些明显的优化?

我正在研究一种中间语言和一个虚拟机来运行具有几个“有问题”属性的函数式语言:词法命名空间(闭包)动态增长的调用堆栈慢整数类型(bignums)中间语言是基于堆栈的,具有当前命名空间的简单哈希表。为了让您了解它的外观,这里是McCarthy91功能:#McCarthy91:M(n)=n-10ifn>100elseM(M(n+11)).subMargsstonrclnfloat100gt.if.subrclnfloat10sub.end.subrclnfloat11addlist1rclMcall-fastlist1rclMtail.endcall-fast.end“大循环”很简单:取指令

java - 为什么 "while (i++ < n) {}"明显比 "while (++i < n) {}"慢

显然在我的带有HotSpotJDK1.7.0_45(所有编译器/VM选项设置为默认值)的Windows8笔记本电脑上,下面的循环finalintn=Integer.MAX_VALUE;inti=0;while(++i至少比以下速度快2个数量级(~10ms对~5000ms):finalintn=Integer.MAX_VALUE;inti=0;while(i++我在编写一个循环来评估另一个不相关的性能问题时碰巧注意到了这个问题。和++i的区别和i++大到足以显着影响结果。如果我们看字节码,更快版本的循环体是:iinciloadldcif_icmplt对于较慢的版本:iloadiincld